// 正则表达式用于定义字符串规则，
//      计算机可以根据正则表达式，来检查一个字符串师是否符合规则，
//      获取字符串中符合规则的内容提取出来

//创建正则表达式的对象

//  语法：
//      var 变量 = new RegExp("正则表达式"，"匹配模式")
//      使用typeof检查正则对象,会返回object
//      在构造函数中可以传递一个匹配模式作为第二个参数，
//          i 忽略大小写
//          g 全局匹配模式

var reg = new RegExp("a", "i");

var str = "a";

//正则表达式方法：
//  test()
//      使用这个方法可以检查一个字符串是否符合正则表达式的规则，
//      如果符合则返回true，否则返回false

var result = reg.test(str);
//console.log(result);
console.log(reg.test("dsds")); // 可以用来检查字符串内是否纯在"a";


//  使用字面量创建正则表达式
//    语法：var 变量 = /正则表达式/匹配模式
//var reg = new RegExp("a","i");
//  使用字面量的方式更简单,构造函数更灵活

reg = /a/i;
// console.log(typeof reg);
// console.log(reg.test("abc"));

//创建一个正则表达式，检查一个字符串中是否有 a 或 b 
reg = /a|b|c/;
console.log(reg.test("abc"));

//创建一个正则表达式检查一个字符串中是否有字母
//  reg = /a|b|c|d|e/;
//  [] 里也是或的关系
//  [ab] == a|b 
//  [a-z] 任意小写字母 
//  [A-Z] 任意大写字母
//  [A-z] 任意字母
reg = /[a-z]/ // 任意小写字母

//检查一个字符串中是否有abc或adc或aec
reg = /a[bde]c/

//[^] 除了
reg = /[^ab]/
console.log(reg.test("abc"));

//  量词
//      - 通过量词可以设置一个内容出现的次数
//      - {n} 正好出现n次 {}只对前面内容生效
//      - {m,n} m - n 次
var reg = /a{3}/
reg = /(ab){3}/
reg = /ab{1,3}c/

reg = /ab+c/ // + 至少一个

reg = /ab*c/ // * 0个或多个

reg = /ab?c/ // ? 0个或一个

result = reg.test("ababab");
//console.log(result);

//  检查一个字符串中是否以a开头
//      ^ 表示开头
reg = /^a/;
//      $ 表示结尾
reg = /a$/;
console.log(reg.test("abca"));

/**
 * 创建一个正则表达式，用来检查一个字符串是否是一个合法手机号
 * 
 * 手机号规则：
 * 
 * 1.以1开头
 * 2.第二位3-9任意数字
 * 3.3位以后任意数字
 * 
 * ^1 [3-9] [0-9]{9}$
 */

var phoneStr = "13567890123";

var phoneReg = /^1[3-9][0-9]{9}$/;

//console.log(phoneReg.test(phoneStr));

/**
 * 检查一个字符串中是否含有.
 * .表示任意字符
 * 在正则表达式中使用\作为转义字符
 * 
 * 注意：使用构造函数时 \ 也是转移字符
 * 
 */
var reg = /\./
reg = /\\/;

reg = new RegExp("\\.");
console.log(reg.test("dasd"));

/**
 *  \w
 *     - 任意字母、数字、_  [A-z0-9_]
 *  \W
 *     - 除了字母、数字、_  [^A-z0-9_]
 *  \d  
 *     - 任意数字  [0-9]
 *  \D
 *     - 除了数字  [^0-9]
 *  \s
 *     - 空格
 *  \S
 *     - 除了空格
 *  \b
 *     - 单词边界
 *  \B
 *     - 除了单词边界
 */

reg = /\bchild\b/;
//console.log(reg.test("hello children"))